home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Maximum CD 2000 November
/
Maximum CD 2000 Nov.iso
/
AofE-Conquerers
/
age2xtrial.exe
/
CABFILE
/
MSGAME.CAB
/
Data
/
gamedata_x1.drs
/
Unnamed File 000004.bina
< prev
next >
Wrap
Text File
|
2000-07-18
|
54KB
|
2,884 lines
;goals 1 and 2 = boats
;goal 3 = groups
;goal combat-arm = his unique unit type (also loads correct upgrades)
;goal 36 = good infantry -- 36 NO = don't build, YES = build,
; 2 = only build if we don't have a castle.
;goal 37 = good cavalry
;goal 38 = good horse-archers
;goal 39 = good archers
;starting goals
(defrule
(true)
=>
(set-goal military-parity YES) ;goal 3
(set-goal attack-control NO) ;goal 4
(set-goal need-deathmatch-villagers NO) ;goal 7
(set-goal secondary-build 1) ;goal 8
(set-goal soldiers-available NO);goal 10
(set-goal attack-enabled YES) ;goal 13
(set-goal age-advancement NO) ;goal 14
(set-goal make-warboat NO) ;goal 15
(set-goal upgrade-conflict NO) ;goal 16
(disable-self)
)
(defrule
(true)
=>
(set-goal pre-unique-arm NO) ;goal 17
(set-goal wonder-attempt MAYBE) ;goal 20
(set-goal sea-owner NO) ;goal 23
(set-goal enemy-soldiers NO) ;goal 26
(set-goal siege-available YES) ;goal 34
(disable-self)
)
;*********************************************************
#load-if-defined AZTEC-CIV
;train jaguar men, eagle men, champs, arbalests
(defrule
(goal combat-arm NOTICE)
=>
(set-goal combat-arm INFANTRY)
(set-goal monk-rating GOOD)
(set-goal 36 2)
(set-goal 37 NO)
(set-goal 38 NO)
(set-goal 39 YES)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 2)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train elite-eagle-warrior)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train elite-eagle-warrior)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train arbalest)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train arbalest)
(set-goal secondary-build 0)
)
#end-if
;*********************************************************
#load-if-defined HUN-CIV
;train tarkans, paladins, light cav, heavy cav archers
(defrule
(goal combat-arm NOTICE)
=>
(set-goal combat-arm CAVALRY)
(set-goal monk-rating FAIR)
(set-goal 36 NO)
(set-goal 37 2)
(set-goal 38 YES)
(set-goal 39 NO)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 35)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 10)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 2)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train hussar)
(nor
(can-train elite-tarkan)
(can-train paladin)
)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
#end-if
;*********************************************************
#load-if-defined KOREAN-CIV
;train war-wagons, hand-cannoneers, heavy cav archers
(defrule
(goal combat-arm NOTICE)
=>
(set-goal combat-arm CAVARCHER)
(set-goal monk-rating FAIR)
(set-goal 36 NO)
(set-goal 37 NO)
(set-goal 38 2)
(set-goal 39 YES)
(set-strategic-number sn-wood-gatherer-percentage 25)
(set-strategic-number sn-food-gatherer-percentage 35)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 2)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train hand-cannoneer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hand-cannoneer)
(set-goal secondary-build 0)
)
#end-if
;*********************************************************
#load-if-defined MAYAN-CIV
;train plumed archers, elite-eagle-warriors, champs, arbalests
(defrule
(goal combat-arm NOTICE)
=>
(set-goal combat-arm ARCHER)
(set-goal monk-rating FAIR)
(set-goal 36 YES)
(set-goal 37 NO)
(set-goal 38 NO)
(set-goal 39 2)
(set-strategic-number sn-wood-gatherer-percentage 25)
(set-strategic-number sn-food-gatherer-percentage 35)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 2)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train champion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train champion)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train elite-eagle-warrior)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train elite-eagle-warrior)
(set-goal secondary-build 0)
)
#end-if
;*********************************************************
#load-if-defined SPANISH-CIV
;train conquistadors, champs, paladins, hussars, handgunners, hvy cav archers
(defrule
(goal combat-arm NOTICE)
=>
(set-goal combat-arm CAVARCHER)
(set-goal monk-rating GOOD)
(set-goal 36 YES)
(set-goal 37 YES)
(set-goal 38 YES)
(set-goal 39 NO)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 35)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 10)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 5)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train champion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train champion)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train paladin)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train paladin)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train hussar)
(not (can-train paladin) )
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 4)
(can-train hand-cannoneer)
(nor
(can-train elite-conquistador)
(can-train heavy-cavalry-archer)
)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hand-cannoneer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 5)
(can-train heavy-cavalry-archer)
(not (can-train elite-conquistador) )
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
#end-if
;*********************************************************
#load-if-defined BRITON-CIV
;train longbows, champs, lt cav
(defrule
(goal combat-arm NOTICE)
=>
(set-goal combat-arm ARCHER)
(set-goal monk-rating GOOD)
(set-goal 36 YES)
(set-goal 37 NO)
(set-goal 38 YES)
(set-goal 39 2)
(set-strategic-number sn-wood-gatherer-percentage 35)
(set-strategic-number sn-food-gatherer-percentage 25)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 2)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train champion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train champion)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train hussar)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
#end-if
;*********************************************************
#load-if-defined BYZANTINE-CIV
;train cataphracts, hvy HA, arbalests, handgunners
(defrule
(true)
=>
(set-goal combat-arm CAVALRY)
(set-goal monk-rating GOOD)
(set-goal 36 YES)
(set-goal 37 2)
(set-goal 38 YES)
(set-goal 39 YES)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 35)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 10)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 3)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(or
(can-train hand-cannoneer)
(can-train arbalest)
)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hand-cannoneer)
(train arbalest)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train hussar)
(nor
(can-train elite-cataphract)
(can-train paladin)
)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
#end-if
;************************************************
#load-if-defined CELTIC-CIV
;train woad raiders, paladins, lt cav, hvy HA, hvy scorps
(defrule
(true)
=>
(set-goal combat-arm INFANTRY)
(set-goal monk-rating POOR)
(set-goal 36 2)
(set-goal 37 YES)
(set-goal 38 YES)
(set-goal 39 NO)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 4)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train paladin)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train paladin)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train light-cavalry)
(not (can-afford-unit paladin) )
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train light-cavalry)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 4)
(can-train heavy-scorpion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-scorpion)
(set-goal secondary-build 0)
)
#end-if
;********************************
#load-if-defined CHINESE-CIV
;train chu-ko-nu, champs, light cav, hvy scorps;
(defrule
(true)
=>
(set-goal combat-arm ARCHER)
(set-goal monk-rating FAIR)
(set-goal 36 YES)
(set-goal 37 NO)
(set-goal 38 YES)
(set-goal 39 2)
(set-strategic-number sn-wood-gatherer-percentage 35)
(set-strategic-number sn-food-gatherer-percentage 25)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 3)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train champion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train champion)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train hussar)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train heavy-scorpion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-scorpion)
(set-goal secondary-build 0)
)
#end-if
;*******************************
#load-if-defined FRANKISH-CIV
;train throwing-axe, paladins, lt cav, hvy HA, hvy scorps
(defrule
(true)
=>
(set-goal combat-arm INFANTRY)
(set-goal monk-rating FAIR)
(set-goal 36 2)
(set-goal 37 YES)
(set-goal 38 YES)
(set-goal 39 NO)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 4)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train paladin)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train paladin)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train hussar)
(not (can-afford-unit paladin) )
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 4)
(can-train heavy-scorpion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-scorpion)
(set-goal secondary-build 0)
)
#end-if
;****************************
#load-if-defined GOTHIC-CIV
;train huskarls, lt cav, hvy HA, hvy scorps
(defrule
(true)
=>
(set-goal combat-arm INFANTRY)
(set-goal monk-rating POOR)
(set-goal 36 2)
(set-goal 37 NO)
(set-goal 38 YES)
(set-goal 39 NO)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 3)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train hussar)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train heavy-scorpion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-scorpion)
(set-goal secondary-build 0)
)
#end-if
;********************************
#load-if-defined JAPANESE-CIV
;train samurai, hvy HA, arbalests, hand-cannoneer, hvy scorps
(defrule
(true)
=>
(set-goal combat-arm INFANTRY)
(set-goal monk-rating GOOD)
(set-goal 36 2)
(set-goal 37 NO)
(set-goal 38 YES)
(set-goal 39 YES)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 3)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(or
(can-train hand-cannoneer)
(can-train arbalest)
)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hand-cannoneer)
(train arbalest)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train heavy-scorpion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-scorpion)
(set-goal secondary-build 0)
)
#end-if
;*********************************
#load-if-defined MONGOL-CIV
;trains mangudai, champs, light cav
(defrule
(true)
=>
(set-goal combat-arm CAVARCHER)
(set-goal monk-rating POOR)
(set-goal 36 YES)
(set-goal 37 NO)
(set-goal 38 2)
(set-goal 39 YES)
(set-strategic-number sn-wood-gatherer-percentage 35)
(set-strategic-number sn-food-gatherer-percentage 25)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 2)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train champion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train champion)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train hussar)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
#end-if
;***********************************
#load-if-defined PERSIAN-CIV
;trains elephants, hvy HA
(defrule
(true)
=>
(set-goal combat-arm CAVALRY)
(set-goal monk-rating POOR)
(set-goal 36 NO)
(set-goal 37 YES)
(set-goal 38 YES)
(set-goal 39 NO)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 2)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train hussar)
(nor
(can-train elite-war-elephant)
(can-train paladin)
)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
#end-if
;***********************************
#load-if-defined SARACEN-CIV
;trains mamluks, hvy HA, arbalests, hand cannoneers
(defrule
(true)
=>
(set-goal combat-arm CAVALRY)
(set-goal monk-rating GOOD)
(set-goal 36 YES)
(set-goal 37 NO)
(set-goal 38 YES)
(set-goal 39 YES)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 45)
(set-strategic-number sn-gold-gatherer-percentage 30)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 3)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train heavy-cavalry-archer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-cavalry-archer)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(or
(can-train hand-cannoneer)
(can-train arbalest)
)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hand-cannoneer)
(train arbalest)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train hussar)
(not (can-train elite-mameluke) )
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
#end-if
;*********************************
#load-if-defined TEUTONIC-CIV
;trains TK, paladins, hvy scorps
(defrule
(true)
=>
(set-goal combat-arm INFANTRY)
(set-goal monk-rating GOOD)
(set-goal 36 2)
(set-goal 37 YES)
(set-goal 38 NO)
(set-goal 39 NO)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 2)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train paladin)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train paladin)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train heavy-scorpion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-scorpion)
(set-goal secondary-build 0)
)
#end-if
;************************************
#load-if-defined TURKISH-CIV
;trains janissaries, champs, lt cav, hvy scorp
(defrule
(true)
=>
(set-goal combat-arm ARCHER)
(set-goal monk-rating FAIR)
(set-goal 36 YES)
(set-goal 37 NO)
(set-goal 38 YES)
(set-goal 39 NO)
(set-strategic-number sn-wood-gatherer-percentage 25)
(set-strategic-number sn-food-gatherer-percentage 35)
(set-strategic-number sn-gold-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 3)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train champion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train champion)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train hussar)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train hussar)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train heavy-scorpion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-scorpion)
(set-goal secondary-build 0)
)
#end-if
;********************************
#load-if-defined VIKING-CIV
;trains berserks, lt cav, arbalests, hvy scorp
(defrule
(true)
=>
(set-goal combat-arm INFANTRY)
(set-goal monk-rating POOR)
(set-goal 36 2)
(set-goal 37 NO)
(set-goal 38 NO)
(set-goal 39 YES)
(set-strategic-number sn-wood-gatherer-percentage 20)
(set-strategic-number sn-food-gatherer-percentage 50)
(set-strategic-number sn-gold-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 5)
(disable-self)
)
(defrule
(goal secondary-build 1)
=>
(generate-random-number 3)
)
(defrule
(goal secondary-build 1)
(random-number == 1)
(can-train light-cavalry)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train light-cavalry)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 2)
(can-train arbalest)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train arbalest)
(set-goal secondary-build 0)
)
(defrule
(goal secondary-build 1)
(random-number == 3)
(can-train heavy-scorpion)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train heavy-scorpion)
(set-goal secondary-build 0)
)
#end-if
;*********************************************************
;*********************************************************
#load-if-defined DIFFICULTY-EASIEST
(defrule
(true)
=>
(set-strategic-number sn-percent-enemy-sighted-response 10)
(set-strategic-number sn-consecutive-idle-unit-limit 60)
(set-strategic-number sn-easiest-reaction-percentage 20)
(set-difficulty-parameter ability-to-maintain-distance 100)
(set-difficulty-parameter ability-to-dodge-missiles 100)
(disable-self)
)
#end-if
;********************************
#load-if-defined DIFFICULTY-EASY
(load "petersen tower")
(defrule
(true)
=>
(set-strategic-number sn-percent-enemy-sighted-response 25)
(set-strategic-number sn-consecutive-idle-unit-limit 20)
(set-strategic-number sn-easier-reaction-percentage 20)
(set-strategic-number sn-hits-before-alliance-change 50)
(set-difficulty-parameter ability-to-maintain-distance 75)
(set-difficulty-parameter ability-to-dodge-missiles 75)
(disable-self)
)
#end-if
;********************************
#load-if-defined DIFFICULTY-MODERATE
(load "petersen tower")
(load "petersen wonder")
(defrule
(true)
=>
(set-strategic-number sn-percent-enemy-sighted-response 75)
(set-strategic-number sn-consecutive-idle-unit-limit 5)
(set-strategic-number sn-hits-before-alliance-change 25)
(set-difficulty-parameter ability-to-maintain-distance 50)
(set-difficulty-parameter ability-to-dodge-missiles 50)
(disable-self)
)
#end-if
;********************************
#load-if-defined DIFFICULTY-HARD
(load "petersen tower")
(load "petersen wonder")
(defrule
(true)
=>
(set-strategic-number sn-percent-enemy-sighted-response 99)
(set-strategic-number sn-consecutive-idle-unit-limit 1)
(set-strategic-number sn-hits-before-alliance-change 10)
(set-difficulty-parameter ability-to-maintain-distance 0)
(set-difficulty-parameter ability-to-dodge-missiles 0)
(disable-self)
)
#end-if
;********************************
#load-if-defined DIFFICULTY-HARDEST
(load "petersen tower")
(load "petersen wonder")
(defrule
(true)
=>
(set-strategic-number sn-percent-enemy-sighted-response 99)
(set-strategic-number sn-hits-before-alliance-change 10)
(set-difficulty-parameter ability-to-maintain-distance 0)
(set-difficulty-parameter ability-to-dodge-missiles 0)
(disable-self)
)
#end-if
;********************************
;********************************
(defrule
(cc-players-building-type-count any-enemy castle == 0)
=>
(set-goal rush-control RUSHING)
)
(defrule
(goal rush-control RUSHING)
(cc-players-building-type-count every-enemy castle > 0)
=>
(set-goal rush-control NO)
)
;========================DARK AGE RULES
(defrule
(true)
=>
(set-strategic-number sn-coop-share-information 1)
(set-strategic-number sn-coop-share-attacking 1)
(set-strategic-number sn-maximum-town-size imperial-town-size)
(set-strategic-number sn-task-ungrouped-soldiers 0)
(set-strategic-number sn-zero-priority-distance 250)
(set-strategic-number sn-blot-exploration-map 0)
(set-strategic-number sn-attack-intelligence 1)
(set-strategic-number sn-gather-defense-units 1)
(set-strategic-number sn-defense-distance 2)
(set-strategic-number sn-maximum-gaia-attack-response 1)
(set-strategic-number sn-ignore-attack-group-under-attack 1)
(set-strategic-number sn-allow-civilian-defense 0)
(disable-self)
)
(defrule
(true)
=>
(set-strategic-number sn-stone-dropsite-distance 3)
(set-strategic-number sn-gold-dropsite-distance 3)
(set-strategic-number sn-retask-gather-amount 20)
(set-strategic-number sn-camp-max-distance 15)
(set-strategic-number sn-mill-max-distance 15)
(set-strategic-number sn-enemy-sighted-response-distance 15)
(set-strategic-number sn-group-form-distance 10)
(set-strategic-number sn-town-defend-priority 7)
(set-strategic-number sn-gold-defend-priority 2)
(set-strategic-number sn-stone-defend-priority 3)
(set-strategic-number sn-forage-defend-priority 0)
(disable-self)
)
(defrule
(true)
=>
(set-strategic-number sn-relic-defend-priority 0)
(set-strategic-number sn-cap-civilian-gatherers 100)
(set-strategic-number sn-percent-civilian-gatherers 0)
(set-strategic-number sn-minimum-civilian-explorers 0)
(set-strategic-number sn-cap-civilian-explorers 0)
(set-strategic-number sn-percent-civilian-explorers 0)
(set-strategic-number sn-cap-civilian-builders 12)
(set-strategic-number sn-percent-civilian-builders 100)
(disable-self)
)
(defrule
(game-time > 600)
=>
(set-strategic-number sn-blot-exploration-map 1)
(disable-self)
)
(defrule
(building-type-count siege-workshop >= 3)
(building-type-count castle >= 3)
(or
(or
(wood-amount < 5000)
(food-amount < 5000)
)
(or
(gold-amount < 2000)
(stone-amount < 700)
)
)
=>
(set-strategic-number sn-percent-civilian-builders 15)
(set-strategic-number sn-percent-civilian-gatherers 85)
(enable-timer t-lumbercamp 1)
(disable-self)
)
(defrule
(strategic-number sn-percent-civilian-gatherers == 85)
(or
(or
(wood-amount < 500)
(food-amount < 500)
)
(or
(gold-amount < 500)
(stone-amount < 100)
)
)
=>
(set-strategic-number sn-percent-civilian-builders 10)
(set-strategic-number sn-percent-civilian-gatherers 90)
(disable-self)
)
; villager count
(defrule
(can-train villager)
(or
(or
(civilian-population < 6)
(and
(current-age == feudal-age)
(civilian-population < 8)
)
)
(or
(and
(current-age == castle-age)
(civilian-population < 10)
)
(and
(current-age == imperial-age)
(civilian-population < civ-dark-rush)
)
)
)
=>
(train villager)
)
(defrule
(strategic-number sn-percent-civilian-gatherers == 90)
(civilian-population < civ-castle)
(can-train villager)
=>
(train villager)
)
(defrule
(building-type-count-total lumber-camp > 0)
(idle-farm-count == 0)
(sheep-and-forage-too-far)
(can-build farm)
=>
(build farm)
)
;*********************************
;age advancement
(defrule
(can-research feudal-age)
(or
(players-current-age every-human >= feudal-age)
(difficulty <= moderate)
)
=>
(research feudal-age)
(set-goal age-advancement NOTICE)
(enable-timer t-ageup 140)
)
(defrule
(current-age == feudal-age)
=>
(disable-timer t-ageup)
(set-goal age-advancement NO)
(disable-self)
)
(defrule
(can-research castle-age)
(or
(players-current-age every-human >= castle-age)
(difficulty <= moderate)
)
=>
(research castle-age)
(set-goal age-advancement NOTICE)
(enable-timer t-ageup 170)
)
(defrule
(current-age == castle-age)
=>
(disable-timer t-ageup)
(set-goal age-advancement NO)
(disable-self)
)
(defrule
(can-research imperial-age)
(or
(difficulty <= moderate)
(and
(players-current-age every-human == imperial-age)
(difficulty == easy)
)
)
=>
(research imperial-age)
(set-goal age-advancement NOTICE)
(enable-timer t-ageup 200)
)
(defrule
(difficulty <= moderate)
(current-age == imperial-age)
=>
(disable-timer t-ageup)
(set-goal age-advancement NO)
(disable-self)
)
(defrule
(goal age-advancement NOTICE)
(or
(current-age < imperial-age)
(and
(current-age < imperial-age)
(difficulty <= easy)
)
)
(timer-triggered t-ageup)
=>
(disable-timer t-ageup)
(set-goal age-advancement NO)
)
;*********************************
;buildings
(defrule
(difficulty <= moderate)
(building-type-count-total house <= fifteen-percent-pop)
(can-build house)
=>
(build house)
)
#load-if-defined DIFFICULTY-EASIEST
(defrule
(military-population < 10)
(housing-headroom < 5)
(population-headroom > 0)
(can-build house)
=>
(build house)
)
#end-if
#load-if-defined DIFFICULTY-EASY
(defrule
(military-population < civ-dark-rush)
(housing-headroom < 5)
(population-headroom > 0)
(can-build house)
=>
(build house)
)
#end-if
(defrule
(strategic-number sn-gold-gatherer-percentage > 0)
(building-type-count mining-camp == 0)
(resource-found gold)
(can-build mining-camp)
=>
(build mining-camp)
)
(defrule
(strategic-number sn-wood-gatherer-percentage > 0)
(building-type-count lumber-camp == 0)
(can-build lumber-camp)
=>
(build lumber-camp)
)
(defrule
(current-age == imperial-age)
(building-type-count siege-workshop > 0)
(building-type-count castle > 0)
(building-type-count town-center < 3)
(can-build town-center)
=>
(build town-center)
)
;build the following after running low on resources
(defrule
(strategic-number sn-percent-civilian-gatherers >= 85)
(timer-triggered t-lumbercamp)
(resource-found gold)
(resource-found stone)
(or
(dropsite-min-distance gold > 7)
(dropsite-min-distance stone > 7)
)
(can-build town-center)
=>
(build town-center)
)
(defrule
(strategic-number sn-percent-civilian-gatherers >= 85)
(timer-triggered t-lumbercamp)
(resource-found wood)
(dropsite-min-distance wood > 7)
(can-build town-center)
=>
(build town-center)
)
(defrule
(timer-triggered t-lumbercamp)
=>
(disable-timer t-lumbercamp)
(enable-timer t-lumbercamp 60)
)
(defrule
(building-type-count-total mill == 0)
(building-type-count-total market == 0)
(can-build mill)
=>
(build mill)
)
(defrule
(building-type-count-total market == 0)
(can-build market)
=>
(build market)
)
(defrule
(building-type-count-total monastery < 3)
(can-build monastery)
=>
(build monastery)
)
(defrule
(can-build barracks)
(building-type-count-total barracks < 2)
=>
(build barracks)
)
(defrule
(building-type-count-total barracks == 2)
(unit-type-count villager > 6)
(can-build barracks)
=>
(build-forward barracks)
)
(defrule
(building-type-count-total archery-range < 2)
(can-build archery-range)
=>
(build archery-range)
)
(defrule
(building-type-count-total archery-range == 2)
(unit-type-count villager > 6)
(can-build archery-range)
=>
(build-forward archery-range)
)
(defrule
(building-type-count-total stable < 2)
(can-build stable)
=>
(build stable)
)
(defrule
(building-type-count-total stable == 2)
(unit-type-count villager > 6)
(can-build stable)
=>
(build-forward stable)
)
(defrule
(building-type-count-total siege-workshop < 2)
(can-build siege-workshop)
=>
(build siege-workshop)
)
(defrule
(building-type-count-total siege-workshop > 1)
(building-type-count-total siege-workshop < 4)
(unit-type-count villager > 6)
(can-build siege-workshop)
=>
(build-forward siege-workshop)
)
(defrule
(building-type-count-total castle < 3)
(can-build castle)
=>
(build castle)
)
(defrule
(building-type-count-total castle > 2)
(building-type-count-total castle < 5)
(unit-type-count villager > 6)
(can-build castle)
=>
(build-forward castle)
)
(defrule
(or
(and
(goal 1 1)
(building-type-count-total dock < 2)
)
(and
(goal 1 10)
(building-type-count-total dock < 4)
)
)
(can-build dock)
=>
(build dock)
)
(defrule
(building-type-count-total blacksmith < 2)
(can-build blacksmith)
=>
(build blacksmith)
)
(defrule
(building-type-count-total university == 0)
(can-build university)
=>
(build university)
)
;*****************************************
;UPGRADES
(defrule
(can-research my-unique-unit-upgrade)
=>
(research my-unique-unit-upgrade)
)
;(defrule
; (can-research my-unique-research)
;=>
; (research my-unique-research)
;)
;DOCK
(defrule
(not (goal 1 0) )
(can-research ri-war-galley)
=>
(research ri-war-galley)
)
(defrule
(not (goal 1 0) )
(can-research ri-galleon)
=>
(research ri-galleon)
)
(defrule
(not (goal 1 0) )
(can-research ri-fast-fire-ship)
=>
(research ri-fast-fire-ship)
)
(defrule
(not (goal 1 0) )
(goal military-parity NO)
(can-research ri-heavy-demolition-ship)
=>
(research ri-heavy-demolition-ship)
)
(defrule
(not (goal 1 0) )
(can-research ri-cannon-galleon)
=>
(research ri-cannon-galleon)
)
(defrule
(not (goal 1 0) )
(can-research ri-deck-guns)
=>
(research ri-deck-guns)
)
;BARRACKS UPGRADES
(defrule
(or
(goal 36 YES)
(and
(building-type-count castle == 0)
(goal 36 2)
)
)
(can-research ri-man-at-arms)
=>
(research ri-man-at-arms)
)
(defrule
(or
(goal 36 YES)
(and
(building-type-count castle == 0)
(goal 36 2)
)
)
(can-research ri-long-swordsman)
=>
(research ri-long-swordsman)
)
(defrule
(or
(goal 36 YES)
(and
(building-type-count castle == 0)
(goal 36 2)
)
)
(can-research ri-two-handed-swordsman)
=>
(research ri-two-handed-swordsman)
)
(defrule
(or
(goal 36 YES)
(and
(building-type-count castle == 0)
(goal 36 2)
)
)
(can-research ri-champion)
=>
(research ri-champion)
)
(defrule
(unit-type-count spearman > 0)
(can-research ri-pikeman)
=>
(research ri-pikeman)
)
(defrule
(unit-type-count pikeman > 0)
(can-research ri-halberdier)
=>
(research ri-halberdier)
)
(defrule
(can-research ri-elite-eagle-warrior)
=>
(research ri-elite-eagle-warrior)
)
(defrule
(can-research ri-tracking)
(not (goal 36 NO) )
=>
(research ri-tracking)
)
(defrule
(can-research ri-squires)
(not (goal 36 NO) )
=>
(research ri-squires)
)
;STABLE
(defrule
(or
(goal 37 YES)
(and
(building-type-count castle == 0)
(goal 37 2)
)
)
(can-research ri-cavalier)
=>
(research ri-cavalier)
)
(defrule
(or
(goal 37 YES)
(and
(building-type-count castle == 0)
(goal 37 2)
)
)
(can-research ri-paladin)
=>
(research ri-paladin)
)
(defrule
(can-research ri-light-cavalry)
=>
(research ri-light-cavalry)
)
(defrule
(can-research ri-hussar)
=>
(research ri-hussar)
)
(defrule
(unit-type-count camel > 0)
(can-research ri-heavy-camel)
=>
(research ri-heavy-camel)
)
(defrule
(can-research ri-husbandry)
(not (goal 37 NO) )
=>
(research ri-husbandry)
)
(defrule
(can-research ri-bloodlines)
(nand
(goal 37 NO)
(goal 38 NO)
)
=>
(research ri-bloodlines)
)
;ARCHERY RANGE
(defrule
(or
(goal 38 YES)
(and
(building-type-count castle == 0)
(goal 38 2)
)
)
(can-research ri-heavy-cavalry-archer)
=>
(research ri-heavy-cavalry-archer)
)
(defrule
(or
(goal 39 YES)
(and
(building-type-count castle == 0)
(goal 39 2)
)
)
(can-research ri-crossbow)
=>
(research ri-crossbow)
)
(defrule
(or
(goal 39 YES)
(and
(building-type-count castle == 0)
(goal 39 2)
)
)
(can-research ri-arbalest)
=>
(research ri-arbalest)
)
(defrule
(or
(goal 39 YES)
(and
(building-type-count castle == 0)
(goal 39 2)
)
)
(can-research ri-hand-cannon)
=>
(research ri-hand-cannon)
)
(defrule
(unit-type-count skirmisher > 0)
(can-research ri-elite-skirmisher)
=>
(research ri-elite-skirmisher)
)
(defrule
(nand
(goal 38 NO)
(goal 39 NO)
)
(can-research ri-thumb-ring)
=>
(research ri-thumb-ring)
)
(defrule
(not (goal 38 NO) )
(can-research ri-parthian-tactics)
=>
(research ri-parthian-tactics)
)
;SIEGE EQUIPMENT
(defrule
(or
(goal combat-arm INFANTRY)
(goal combat-arm ARCHER)
)
(can-research ri-heavy-scorpion)
=>
(research ri-heavy-scorpion)
)
(defrule
(can-research ri-capped-ram)
(or
(or
(cc-players-building-type-count any-enemy town-center > 2)
(cc-players-building-type-count any-enemy keep > 1)
)
(or
(cc-players-building-type-count any-enemy bombard-tower > 0)
(cc-players-building-type-count any-enemy castle > 0)
)
)
=>
(research ri-capped-ram)
)
(defrule
(or
(or
(cc-players-building-type-count any-enemy town-center > 2)
(cc-players-building-type-count any-enemy keep > 3)
)
(or
(cc-players-building-type-count any-enemy bombard-tower > 1)
(cc-players-building-type-count any-enemy castle > 2)
)
)
(can-research ri-siege-ram)
=>
(research ri-siege-ram)
)
(defrule
(can-research ri-onager)
=>
(research ri-onager)
)
(defrule
(can-research ri-siege-onager)
=>
(research ri-siege-onager)
)
(defrule
(can-research ri-bombard-cannon)
=>
(research ri-bombard-cannon)
)
;*********************************************************
;UNIT PRODUCTION
(defrule
(or
(or
(wood-amount < 5000)
(food-amount < 5000)
)
(or
(gold-amount < 2000)
(stone-amount < 700)
)
)
=>
(set-goal need-deathmatch-villagers YES)
(disable-self)
)
(defrule
(building-type-count castle == 0)
(can-train militiaman-line)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
(not (goal 36 NO) )
=>
(train militiaman-line)
)
(defrule
(building-type-count castle == 0)
(can-train knight-line)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
(not (goal 37 NO) )
=>
(train knight-line)
)
(defrule
(building-type-count castle == 0)
(can-train cavalry-archer-line)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
(not (goal 38 NO) )
=>
(train cavalry-archer-line)
)
(defrule
(building-type-count castle == 0)
(can-train archer-line)
(not (unit-available hand-cannoneer) )
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
(not (goal 39 NO) )
=>
(train archer-line)
)
(defrule
(building-type-count castle == 0)
(can-train hand-cannoneer)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
(not (goal 39 NO) )
=>
(train hand-cannoneer)
)
(defrule
(can-train my-unique-unit-line)
(or
(population < deathmatch-unit-max)
(and
(population < unit-max)
(goal need-deathmatch-villagers NO)
)
)
=>
(train my-unique-unit-line)
(set-goal secondary-build 1)
)
; monks
(defrule
(unit-type-count my-unique-unit-line > ten-percent-pop)
(unit-type-count-total monk == 0)
(goal monk-rating POOR)
(can-train monk)
=>
(train monk)
)
(defrule
(unit-type-count my-unique-unit-line > ten-percent-pop)
(unit-type-count-total monk < five-percent-pop)
(goal monk-rating FAIR)
(can-train monk)
=>
(train monk)
)
(defrule
(unit-type-count my-unique-unit-line > ten-percent-pop)
(unit-type-count-total monk < ten-percent-pop)
(goal monk-rating GOOD)
(can-train monk)
=>
(train monk)
)
;*********************************************
;BLACKSMITH
;first level upgrades
(defrule
(can-research ri-forging)
(nand
(goal 36 NO)
(goal 37 NO)
)
=>
(research ri-forging)
)
(defrule
(can-research ri-fletching)
(or
(nand
(goal 38 NO)
(goal 39 NO)
)
(or
(building-type-count-total watch-tower > 0)
(unit-type-count-total war-galley > 0)
)
)
=>
(research ri-fletching)
)
(defrule
(can-research ri-padded-archer-armor)
(nand
(goal 38 NO)
(goal 39 NO)
)
=>
(research ri-padded-archer-armor)
)
(defrule
(can-research ri-scale-mail)
(not (goal 36 NO) )
=>
(research ri-scale-mail)
)
(defrule
(can-research ri-scale-barding)
(not (goal 37 NO) )
=>
(research ri-scale-barding)
)
;second upgrades
(defrule
(can-research ri-iron-casting)
(nand
(goal 36 NO)
(goal 37 NO)
)
=>
(research ri-iron-casting)
)
(defrule
(can-research ri-bodkin-arrow)
(or
(nand
(goal 38 NO)
(goal 39 NO)
)
(or
(building-type-count-total watch-tower > 0)
(unit-type-count-total war-galley > 0)
)
)
=>
(research ri-bodkin-arrow)
)
(defrule
(can-research ri-leather-archer-armor)
(nand
(goal 38 NO)
(goal 39 NO)
)
=>
(research ri-leather-archer-armor)
)
(defrule
(can-research ri-chain-mail)
(not (goal 36 NO) )
=>
(research ri-chain-mail)
)
(defrule
(can-research ri-chain-barding)
(not (goal 37 NO) )
=>
(research ri-chain-barding)
)
;third upgrades
(defrule
(can-research ri-blast-furnace)
(nand
(goal 36 NO)
(goal 37 NO)
)
=>
(research ri-blast-furnace)
)
(defrule
(can-research ri-bracer)
(or
(nand
(goal 38 NO)
(goal 39 NO)
)
(or
(building-type-count-total watch-tower > 0)
(unit-type-count-total war-galley > 0)
)
)
=>
(research ri-bracer)
)
(defrule
(can-research ri-ring-archer-armor)
(nand
(goal 38 NO)
(goal 39 NO)
)
=>
(research ri-ring-archer-armor)
)
(defrule
(can-research ri-plate-mail)
(not (goal 36 NO) )
=>
(research ri-plate-mail)
)
(defrule
(can-research ri-plate-barding)
(not (goal 37 NO) )
=>
(research ri-plate-barding)
)
;SIEGE RESEARCH ITEMS
(defrule
(can-research ri-siege-engineers)
=>
(research ri-siege-engineers)
)
(defrule
(can-research ri-hoardings)
=>
(research ri-hoardings)
)
(defrule
(not (goal 1 0) )
(can-research ri-heated-shot)
=>
(research ri-heated-shot)
)
(defrule
(building-type-count-total watch-tower > 2)
(can-research ri-guard-tower)
=>
(research ri-guard-tower)
)
(defrule
(building-type-count-total guard-tower > 2)
(can-research ri-keep)
=>
(research ri-keep)
)
(defrule
(can-research ri-bombard-tower)
=>
(research ri-bombard-tower)
)
(defrule
(goal wall-build YES)
(can-research ri-fortified-wall)
=>
(research ri-fortified-wall)
)
;SHIPS
(defrule
(not (goal 1 0) )
(can-research ri-careening)
=>
(research ri-careening)
)
(defrule
(not (goal 1 0) )
(can-research ri-dry-dock)
=>
(research ri-dry-dock)
)
(defrule
(not (goal 1 0) )
(can-research ri-shipwright)
=>
(research ri-shipwright)
)
;OTHER RESEARCH ITEMS
(defrule
(can-research ri-ballistics)
=>
(research ri-ballistics)
)
(defrule
(can-research ri-chemistry)
=>
(research ri-chemistry)
)
(defrule
(can-research ri-conscription)
=>
(research ri-conscription)
)
;***********************************
;ECONOMIC UPGRADES
;***********************************
;mining-camp items
(defrule
(strategic-number sn-percent-civilian-gatherers >= 85)
(can-research ri-gold-mining)
=>
(research ri-gold-mining)
)
(defrule
(strategic-number sn-percent-civilian-gatherers >= 85)
(can-research ri-gold-shaft-mining)
=>
(research ri-gold-shaft-mining)
)
(defrule
(strategic-number sn-percent-civilian-gatherers >= 85)
(research-completed ri-gold-mining)
(can-research ri-stone-mining)
=>
(research ri-stone-mining)
)
(defrule
(strategic-number sn-percent-civilian-gatherers >= 85)
(research-completed ri-gold-shaft-mining)
(can-research ri-stone-shaft-mining)
=>
(research ri-stone-shaft-mining)
)
;university stuff
(defrule
(can-research ri-masonry)
=>
(research ri-masonry)
)
(defrule
(can-research ri-architecture)
=>
(research ri-architecture)
)
(defrule
(can-research ri-stonecutting)
=>
(research ri-stonecutting)
)
;market & town center
(defrule
(can-research ri-town-watch)
=>
(research ri-town-watch)
)
(defrule
(can-research ri-town-patrol)
=>
(research ri-town-patrol)
)
(defrule
(player-in-game any-ally)
(can-research ri-cartography)
=>
(research ri-cartography)
)
(defrule
(or
(unit-type-count trade-cart > 1)
(unit-type-count trade-cog > 1)
)
(can-research ri-caravan)
=>
(research ri-caravan)
)
(defrule
(can-research ri-guilds)
=>
(research ri-guilds)
)
(defrule
(current-age == imperial-age)
(can-research ri-loom)
=>
(research ri-loom)
)
(defrule
(strategic-number sn-percent-civilian-gatherers >= 85)
(can-research ri-wheel-barrow)
=>
(research ri-wheel-barrow)
)
(defrule
(strategic-number sn-percent-civilian-gatherers >= 85)
(can-research ri-hand-cart)
=>
(research ri-hand-cart)
)
(defrule
(player-in-game any-ally)
(can-research ri-coinage)
=>
(research ri-coinage)
)
(defrule
(player-in-game any-ally)
(can-research ri-banking)
=>
(research ri-banking)
)
;monk upgrades
(defrule
(can-research ri-faith)
(or
(cc-players-unit-type-count any-enemy monk >= ten-percent-pop)
(cc-players-unit-type-count any-enemy monk > 10)
)
=>
(research ri-faith)
)
(defrule
(can-research ri-heresy)
(or
(cc-players-unit-type-count any-enemy monk > five-percent-pop)
(cc-players-unit-type-count any-enemy monk > 5)
)
=>
(research ri-heresy)
)
(defrule
(difficulty <= moderate)
(can-research ri-atonement)
(or
(cc-players-unit-type-count any-enemy monk > five-percent-pop)
(cc-players-unit-type-count any-enemy monk > 5)
)
=>
(research ri-atonement)
)
(defrule
(can-research ri-block-printing)
(unit-type-count monk > five-percent-pop)
=>
(research ri-block-printing)
)
(defrule
(can-research ri-illumination)
(unit-type-count monk > 1)
=>
(research ri-illumination)
)
(defrule
(can-research ri-fervor)
(unit-type-count monk > 1)
=>
(research ri-fervor)
)
(defrule
(difficulty <= moderate)
(can-research ri-redemption)
(unit-type-count monk > five-percent-pop)
=>
(research ri-redemption)
)
(defrule
(can-research ri-sanctity)
(unit-type-count monk > 1)
=>
(research ri-sanctity)
)
;***********************************
;MARKET STUFF
;***********************************
(defrule
(wood-amount > 5000)
(commodity-selling-price wood >= 20)
(can-sell-commodity wood)
=>
(chat-local-to-self "abuse market; sell wood")
(sell-commodity wood)
)
(defrule
(food-amount > 5000)
(commodity-selling-price food >= 20)
(can-sell-commodity food)
=>
(chat-local-to-self "abuse market; sell food")
(sell-commodity food)
)
(defrule
(gold-amount < 1200)
(wood-amount > 5000)
(can-sell-commodity wood)
=>
(chat-local-to-self "need gold; sell wood")
(sell-commodity wood)
)
(defrule
(gold-amount < 1200)
(food-amount > 5000)
(can-sell-commodity food)
=>
(chat-local-to-self "need gold; sell food")
(sell-commodity food)
)
(defrule
(gold-amount < 1200)
(stone-amount > 1000)
(building-type-count-total castle >= 5)
(can-sell-commodity stone)
=>
(chat-local-to-self "need gold; sell stone")
(sell-commodity stone)
)
(defrule
(stone-amount < 650)
(gold-amount > 5000)
(building-type-count-total castle < 5)
(can-buy-commodity stone)
=>
(chat-local-to-self "need stone")
(buy-commodity stone)
)
(defrule
(wood-amount < 1100)
(gold-amount > 5000)
(can-buy-commodity wood)
=>
(chat-local-to-self "need wood")
(buy-commodity wood)
)
(defrule
(food-amount < 1600)
(gold-amount > 5000)
(can-buy-commodity food)
=>
(chat-local-to-self "need food")
(buy-commodity food)
)